home *** CD-ROM | disk | FTP | other *** search
/ BCI NET / BCI NET Dec 94.iso / archives / telecomm / bbs / tbbs093.lha / Programmer / techprg.h < prev   
C/C++ Source or Header  |  1994-09-09  |  8KB  |  293 lines

  1. /* Structures and command IDs collected from TechPrg.guide */
  2.  
  3. /* 
  4.  * Some typedefs so that we can avoid having to use the exec/types.h
  5.  * typenames
  6.  */
  7.  
  8. typedef unsigned long ulong;
  9. typedef unsigned short uword;
  10. typedef unsigned char ubyte;
  11.  
  12. typedef void *obj;      /* This is more useful in some other programs */
  13.  
  14. struct BBSMsg {
  15.     struct Message Msg; /* An exec message */
  16.     int SendingNode;    /* The number of the node sending the message or
  17.                            -1 if sent by a utility */
  18.     uword ID;           /* The ID number of the command this message is
  19.                            supposed to cause TechCon to perform */
  20.     obj result;         /* The result field pointing to whatever result
  21.                            data is returned by the call (if any) */
  22.     int Ret;            /* Used by some calls for all kinds of stuff
  23.                            (used to be a result field) */
  24.     obj data;           /* Additional data for the command, whenever the
  25.                            command requires any */
  26. };
  27.  
  28. #define ID_BEGINMSGH    11
  29. #define ID_ENDMSGH      12
  30. #define ID_LOADMSG      13
  31. #define ID_SAVEMSG      14
  32. #define ID_UPDATEMSG    15
  33. #define ID_GETMSGAREA   16
  34. #define ID_GETFILEROOT  17
  35. #define ID_UPDATEFILES  18
  36. #define ID_LOADUSER     19
  37. #define ID_SAVEUSER     20
  38. #define ID_GETUSERPATH  21
  39. #define ID_KILLUSER     22
  40. #define ID_GETINDEX     23
  41. #define ID_GETUSERNUM   26
  42. #define ID_FREEDVEC     27
  43. #define ID_INCOPENCOUNT 28
  44. #define ID_DECOPENCOUNT 29
  45. #define ID_GETNUMAREAS  30
  46. #define ID_GETNUMNODES  31
  47. #define ID_GETUSERNAME  37
  48. #define ID_GETSIGS      43
  49. #define ID_SETLOWMSG    44
  50. #define ID_DELMSGFILE   45
  51. #define ID_LOCKFILEROOT 46 /* TechCon 0.91+ */
  52. #define ID_FREEFILEROOT 47 /* TechCon 0.91+ */
  53. #define ID_MOVEFILE     48 /* TechCon 0.92+ */
  54.  
  55. struct SigDat {         /* SIG configuration structure */
  56.     struct MinNode Node;
  57.     int SigNum;
  58.     char *Name;
  59.     int MinAcc;
  60.     int Mask;
  61.     struct MinList Areas; /* List of nodes with ln_Name fields pointing to
  62.                              a struct AreaCfg */
  63. };
  64.  
  65. struct FAreaCfg {       /* File area configuration structure */
  66.     ubyte *Name;
  67.     int MinAcc;
  68.     int UpAcc;
  69.     int DownAcc;
  70.     int Mask;
  71.     int UpMask;
  72.     int DownMask;
  73.     struct MinList *FreeDL;     /* List of nodes with ln_Name fields
  74.                                    pointing to a parsed pattern */
  75.     struct MinList *NoUpload;   /* List of nodes with ln_Name fields
  76.                                    pointing to a parsed pattern */
  77.     ubyte *Redirect;
  78.     struct MinList *Misc;       /* TechCon 0.91+ */
  79. };
  80.  
  81. struct FidoNode {       /* FidoNet address structure */
  82.     struct Node nd;
  83.     int Zone;
  84.     int Net;
  85.     int Node;
  86.     int Point;
  87. };
  88.  
  89. struct AreaCfg {        /* Message area configuration */
  90.     int AreaNr;
  91.     ubyte *Name;
  92.     int Type;
  93.     ulong LowMsg;
  94.     ulong HiMsg;
  95.     int MsgFile;
  96.     int MinAcc;
  97.     int ReadAcc;
  98.     int WriteAcc;
  99.     int RPAcc;
  100.     int Mask;
  101.     int ReadMask;
  102.     int WriteMask;
  103.     int RPMask;
  104.     ubyte *EchoTag;
  105.     ubyte *Origin;
  106.     ulong HiWater;
  107.     int NoImport;
  108.     struct MinList *ExportTo;   /* List of struct FidoNodes */
  109.     struct MinList *Misc;       /* List of nodes w/ ln_Name pointing to a
  110.                                    string */
  111.     struct FidoNode *AKA;
  112.     int nmdt;   /* PRIVATE - don't touch */
  113.     long mdt;   /* PRIVATE - don't touch */
  114.     long idx;   /* PRIVATE - don't touch */
  115.     int mod;   /* Set this if you change anything during a message handling
  116.                   session */
  117. };
  118.  
  119. struct BBSMsg {         /* See info on TechCon private port for comments in
  120.                            fields */
  121.     struct Message Msg;
  122.     int SendingNode;
  123.     uword ID;
  124.     void *result;
  125.     int Ret;
  126.     void *data;
  127.     int Node;
  128. };
  129.  
  130. struct LoadedMsg {      /* This is what LoadMsg() returns (for some reason) */
  131.     struct FMsg *msg;
  132.     ulong Length;
  133. };
  134.  
  135. struct MsgReq {         /* Used for lots of stuff */
  136.     int Area;
  137.     ulong MsgNum;
  138.     struct FMsg *bmsg;
  139.     ulong MsgLen;
  140.     ubyte *MText;
  141.     ubyte *ToUser;
  142. };
  143.  
  144. struct FileMoveDat {
  145.     struct DirNode *sdir, *ddir;
  146.     struct FileNode *fncopy;
  147. };
  148.  
  149. struct MsgId {          /* A binary parsed version of a MSGID: or REPLY:
  150.                            field */
  151.     uword Zone;
  152.     uword Net;
  153.     uword Node;
  154.     uword Point;
  155.     ulong ID;
  156. };
  157.  
  158. struct IndexEntry {     /* Message index */
  159.     ulong MsgNum;
  160.     uword FileNum;
  161.     uword OffSet;
  162.     ulong MsgLen;
  163.     struct MsgId MSGID;
  164.     struct MsgId REPLY;
  165. };
  166.  
  167. #define MSG_PRIVATE     0x0001
  168. #define MSG_LOCAL       0x0002 /* Stupid, I don't remember what this is for
  169.                                   (ignore it) */
  170. #define MSG_RECEIVED    0x0004
  171. #define MSG_SENT        0x0008 /* Has been sent (FidoNet) */
  172. #define MSG_FILEATT     0x0010 /* Has a file attached */
  173. #define MSG_KILLSENT    0x0020 /* On local, kill on receive (not useful) */
  174. #define MSG_DEAD        0x0040 /* A dead message - Loading will fail */
  175.  
  176. struct MemMsg {         /* Recommended format for message storage in memory */
  177.     ulong MsgNum;
  178.     ulong Original;
  179.     ulong FirstReply;
  180.     ulong PrevReply;
  181.     ulong NextReply;
  182.     uword Bits;
  183.     uword OrigZone;
  184.     uword OrigNet;
  185.     uword OrigNode;
  186.     uword OrigPoint;
  187.     uword DestZone;
  188.     uword DestNet;
  189.     uword DestNode;
  190.     uword DestPoint;
  191.     ubyte DateTime[20];
  192.     ubyte *AttFile;
  193.     ubyte *FromUser;
  194.     ubyte *ToUser;
  195.     ubyte *Subject;
  196.     ubyte *MsgText;
  197. };
  198.  
  199. struct FMsg {           /* Message format as found in .MDT files */
  200.     ulong MsgNum;
  201.     ulong Original;
  202.     ulong FirstReply;
  203.     ulong PrevReply;
  204.     ulong NextReply;
  205.     uword Bits;
  206.     uword OrigZone;
  207.     uword OrigNet;
  208.     uword OrigNode;
  209.     uword OrigPoint;
  210.     uword DestZone;
  211.     uword DestNet;
  212.     uword DestNode;
  213.     uword DestPoint;
  214.     ubyte DateTime[20];
  215.         /* Null terminated attached file name (full, w/path) */
  216.         /* Null terminated from */
  217.         /* Null terminated to */
  218.         /* Null terminated subject */
  219.         /* Null terminated message text */
  220. };
  221.  
  222. struct FileNode {       /* File structure */
  223.     struct Node Node;
  224.     ubyte *Name;
  225.     ubyte *Comment;
  226.     ulong Size;
  227.     ulong Prot;
  228.     ulong Days;
  229.     ulong Mins;
  230.     ulong Ticks;
  231.     ubyte *Uploader;
  232.     uword LongDesc;
  233.     ubyte **DescLines;
  234.     uword Number;
  235.     unsigned Free : 1;
  236. };
  237.  
  238. struct DirNode {        /* Directory structure */
  239.     struct Node Node;
  240.     ubyte *DirName;
  241.     struct MinList *flist; /* List of struct FileNodes */
  242.     struct MinList *dlist; /* List of struct DirNodes */
  243.     struct DirNode *Parent; /* This node can be found in Parent->dlist */
  244.     struct FAreaCfg *fc;
  245.     unsigned HasExt : 1;
  246. };
  247.  
  248. struct UserVal {        /* This is actually in the file like this */
  249.     uword Lines;
  250.     short Access;
  251.     long BytesLeft;
  252.     long FilesLeft;
  253.     ulong BytesDown;
  254.     ulong FilesDown;
  255.     ulong BytesUp;
  256.     ulong FilesUp;
  257.     uword ByteRatio;
  258.     uword FileRatio;
  259.     ulong Messages;
  260.     short TimeDay;
  261.     short TimeCall;
  262.     short TimeLeft;
  263.     short CallsDay;
  264.     short CallsLeft;
  265.     short TimeBank;
  266.     short MaxTimeBank;
  267.     ulong AvgCps;
  268.     ulong AvgCpsMul;
  269.     ulong Mask;
  270.     ulong TotalCalls;
  271.     ulong LastCall;
  272.     unsigned StripCols : 1;
  273.     unsigned SlowTerm : 1;
  274.     unsigned SimpleTerm : 1;
  275.     unsigned StripAll : 1;
  276. };
  277.  
  278. struct BBSUser {        /* User structure */
  279.     ubyte *Name;
  280.     ubyte *Password;
  281.     ubyte *CharSet;
  282.     ubyte *Extension;
  283.     ubyte *Locale;      /* Used to be a locale, now a string file
  284.                            (determines language, anyhow) */
  285.     ubyte *Protocol;
  286.     ulong *HighRead;    /* Array of highread pointers */
  287.     ubyte *AMode;       /* Array of 'S' or 'N' */
  288.     struct MinList Misc; /* A list of nodes with ln_Name ptr to string
  289.                             containing misc definition for user */
  290.     int Number;
  291.     struct UserVal val;
  292. };
  293.